/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.dahg.project.web;

import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.dahg.project.controller.model.Usuario;
import org.dahg.project.controller.model.exceptions.ControllerException;
import org.dahg.project.controller.model.services.local.UsuarioService;
import org.primefaces.event.RowEditEvent;

/**
 *
 * @author dahg
 */
@ManagedBean
@ViewScoped
public class PersonasBean extends AbstractWebBean {
    
    @EJB
    private UsuarioService service;
    private List<Usuario> usuarios;
    private Usuario nuevo;
    
    @PostConstruct
    public void refresh() {
        if(usuarios==null) {
            usuarios = service.getAll();
        }
        else {
            usuarios.clear();
            usuarios.addAll(service.getAll());
        }
        
        nuevo = new Usuario();
    }

    public String agregar() {
        try {
            
            if (nuevo.getId()==null || nuevo.getId().isEmpty())
                throw new ControllerException("Debe ingresar un ID");
            
            if (nuevo.getNombre()==null || nuevo.getNombre().isEmpty())
                throw new ControllerException("Debe ingresar un Nombre");
            
            if (nuevo.getContrasena()==null || nuevo.getContrasena().isEmpty())
                throw new ControllerException("Debe ingresar una contrasena");
            
            service.persist(nuevo);
            addInfo("Usuario creado");
            nuevo.setId(null);
            nuevo.setNombre(null);
            nuevo.setContrasena(null);
            refresh();            
        } catch (ControllerException ex) {
            addError(ex.getMessage());
        }
        
        return null;
    }
    
    public void onRowEdit(RowEditEvent evt) {
        Usuario usr = (Usuario) evt.getObject();
        service.merge(usr);
        addInfo("Usuario actualizado");
    }
    
    public String removeUsuario(Usuario usr) {
        service.remove(usr);
        addInfo("Usuario eliminado");
        refresh();
        
        return null;
    }
    
    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    public Usuario getNuevo() {
        return nuevo;
    }

    public void setNuevo(Usuario nuevo) {
        this.nuevo = nuevo;
    }
    
    
}
